package demo02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

/*
 *  要求：模拟注册操作，如果用户名已存在，则抛出异常并提示：“亲，该用户名已被注册”
 */
public class Demo01RegisterException {
    // 使用数组保存注册过的用户名（模仿数据库）
    // static：该成员变量属于类，多个对象共享一份数据
    static ArrayList<String> usernames = new ArrayList<>();

    public static void main(String[] args) {
        Collections.addAll(usernames, "土司鸡", "老虎", "粹花"); // 数组中添加已有用户名
        System.out.print("请输入注册的用户名：");
        String newuser = new Scanner(System.in).next();
        try { // 可能产生异常的代码
            checkUsername(newuser); // 检查用户是否重复的方法
            usernames.add(newuser); // 检查成功，添加用户
            System.out.println("注册成功");
        } catch (RegisterException e) { // RegisterException注册异常的处理逻辑：打印异常详细信息
            e.printStackTrace();
        } finally { // 最终无论是否有异常，都会执行的用户列表提示信息
            System.out.println("用户列表：" + usernames);
        }
    }

    private static void checkUsername(String username) throws RegisterException {
        for (String string : usernames) { // 遍历数组，查看新用户名是否有重复
            if (string.equals(username)) {
                throw new RegisterException("亲，" + username + "已被注册"); // 如果重复，抛出自定义的注册异常
            }
        }
    }
}
